import api from '../../../api/index';
import dayjs from '../../../plugin/dayjs/index';
import daysbefore from '../../../plugin/daysbefore';
import * as echarts from '../../../components/ec-canvas/echarts';
import bleUtils from '../../utils/bluetooth'
import Toast from '@vant/weapp/toast/toast';

//全局声明chart
var seriesDataArr = [];
var timeArr = [];
var chart = null;

// 时间格式化
function formatTime(date = new Date()) {
	return dayjs(date).format('YYYY-MM-DD HH:mm:ss');
}
function formatTime2(date = new Date()) {
	return dayjs(date).format('YYYY-MM-DD');
}
Page({
	/**
   * 页面的初始数据
   */
	data: {
		showDialogdevice: false,
		inputshow: false,
		inputlist: [
			{ unit: 'PEF', value: '', text: '请输入数值' },
			{ unit: 'PEV1', value: '', text: '请输入数值' },
			{ unit: 'FVC', value: '', text: '请输入数值' },
			{ unit: 'MEF75', value: '', text: '请输入数值' },
			{ unit: 'MEF50', value: '', text: '请输入数值' },
			{ unit: 'MEF25', value: '', text: '请输入数值' }
		],
		c_val: 80,
		shebeiicon: 'http://lk-webfont.oss-cn-beijing.aliyuncs.com/redstart/%E5%91%BC%E5%90%B8.png',
		fasleshebeiicon: 'https://hxhealth.oss-cn-beijing.aliyuncs.com/redstart/sportsAdministration/gantanhao.png',
		PEFValueLast: '--',
		FEV1ValueLast: '--',
		FVCValueLast: '--',
		MEF75ValueLast: '--',
		MEF50ValueLast: '--',
		MEF25ValueLast: '--',
    linedata: null,
    show: false,
    ec: {
      // 初始化图表
      onInit:  (canvas, width, height) => {
        //初始化echarts元素，绑定到全局变量，方便更改数据
        chart = echarts.init(canvas, null, {
          width: width,
          height: height
        });
        canvas.setChart(chart);
        return chart;
      }
    },
		bindDeviceId: null,
		PEFValue: '--',
		FEV1Value: '--',
		FVCValue: '--',
		MEF75Value: '--',
		MEF50Value: '--',
		MEF25Value: '--',
		showDialog: false,
		bindDeviceTextInfo: '',
		bleAvaible: true
	},

	/**
   * 生命周期函数--监听页面加载
   */
	onLoad(options) {
		this.gethistrorylist(); //查看历史数据
    this.getloadlist(); //查询当前最新数据
		this.doInitBlue()
  },
	async get() {
		try {
		  const res = await api.post('/api/user/storage/get', {
			data: {
			  'key': 'devicelist'
			}
		  })
		  if(res[0].value) {
				var array = JSON.parse(res[0].value)
				const listValue = array.filter(item => item.name === 'breath')
				if(listValue.length > 0) {
					this.bindEquipment(listValue[0].devicelist[0].deviceId)
				} else {
					this.setData({
						showDialogdevice: true
					}) 
				  }
		  } else {
			this.setData({
				showDialogdevice: true
			}) 
		  }
		} catch (e) {
		  console.log('get->', e)
		  return null
		}
	},
  gohistorypage() {
	wx.navigateTo({
        url: `/breath/pages/history/index`,
      })
  },
  // 蓝牙初始化
  doInitBlue() {
    bleUtils.initBlueTooth().then((res) => {
			this.setData({
				bleAvaible: true
			})
      this.doGetBluetoothAdapterState()
			this.get()
    }).catch(error => {
			this.setData({
				bindDeviceTextInfo: '蓝牙未开启，请开启蓝牙'
			})
			this.setData({
				showDialog: true
			})
			this.setData({
				bleAvaible: false
			})
		})
  },
  // 获取蓝牙适配器状态
  doGetBluetoothAdapterState() {
    bleUtils.getBluetoothAdapterState()
  },
  //开始搜索蓝牙设备
  doStartSearchBlueTooth() {
    bleUtils.startSearchBlueTooth().then((res) => {
      console.log(res, '搜索设备成功')
      this.doOnBluetoothDeviceFound()
    })
  },
  // 监听搜素到新的蓝牙设备
  doOnBluetoothDeviceFound() {
    bleUtils.onBluetoothDeviceFound().then((res) => {
      console.log(res, '监听搜素到新的蓝牙设备成功')
			const filterValue = res.filter(item => item.name === 'B121053743')
			if(filterValue.length > 0) {
				this.setData({
					bindDeviceId: filterValue[0].deviceId
				})
				this.setData({
					bindDeviceTextInfo: '搜索到设备，正在链接设备'
				})
				// 搜索到可用的蓝牙设备，停止搜索
				bleUtils.stopSearchBlueTooth()
				this.bindEquipment(filterValue[0].deviceId)
			} else {
				//没有搜索到可用设备，重新搜索
				// console.log('没有搜索到可用设备，重新搜索')
				// this.doStartSearchBlueTooth()
				this.setData({
					bindDeviceTextInfo: '没有搜索到对应的蓝牙设备，请重新搜索'
				})
				setTimeout(() => {
					this.setData({
						showDialog: false
					})
				}, 1500);
			}
    })
  },
	onCancel() {
		this.setData({
			showDialog: false,
		})
		// 停止搜索
		bleUtils.stopSearchBlueTooth()
	},
  // 连接蓝牙设备
  bindEquipment(deviceId) {
		this.setData({
			bindDeviceId: deviceId
		})
		this.setData({
			bindDeviceTextInfo: '连接设备中...'
		})
		this.setData({
			showDialog: true
		})
    bleUtils.createBLEConnection(this.data.bindDeviceId).then((res) => {
	  	console.log(res, '连接成功')
			this.setData({
				bindDeviceTextInfo: '设备链接成功，请点击设备开关键后再吹气'
			})
      this.doGetBLEDeviceServices()
    }).catch(err => {
      console.log(err, '连接设备失败')
      this.doGetBLEDeviceServices()
    })
  },
  // 获取蓝牙设备特征值
  doGetBLEDeviceServices() {
    bleUtils.getBLEDeviceServices(this.data.bindDeviceId).then((res) => {
		console.log(res);
			this.setData({
				bindDeviceTextInfo: '测量完成'
			})
			setTimeout(() => {
				this.setData({
					showDialog: false
				})
			}, 1000);
			console.log(res[14])
			var b = res[14]
			let cd = ''
			if (b >= 0.7) {
				cd = "轻度";
			} else if (b >= 0.6 && b <= 0.69) {
				cd = "中度";
			} else if (b >= 0.5 && b <= 0.59) {
				cd = "中重度";
			} else if (b >= 0.35 && b <= 0.49) {
				cd = "重度";
			} else if (b < 0.35) {
				cd = "极重度";
			}
			console.log(cd,'程度');
			var lx_1 = (Number(res[14]) / Number(res[15])).toFixed(2) //(YJZ_FEV1 / YJZ_FVC);
			var lx_2 = Number(res[15]).toFixed(2) // YJZ_FVC;
			let lx = ''
			let jiedu = ''
			if (lx_1<0.92) {
				lx = "阻塞型";
				jiedu = "阻塞性通气功能障碍指的是由于气道阻塞导致通气功能的不良，人体通气可以分为通气功能和换气功能。肺通气指的是外界气体与肺泡进行交换，肺换气指的是肺泡内气体与血液中气体进行交换。通气功能障碍指的是肺泡内气体与外界气体交换出现障碍，而阻塞性通气功能障碍指的是由于气道狭窄导致肺泡里气体排出不了，而外界气体进入也有问题，这样的现象就称为阻塞性通气功能障碍。\n" +
						"引起阻塞性通气功能障碍的疾病比较多样，最常见的就是慢性阻塞性肺疾病，是小气道的病变，小气道出现狭窄导致通气不良，从而出现阻塞性通气功能障碍。另外支气管哮喘的急性发作期同样也会出现阻塞性通气功能障碍，当然还有其它疾病也会引起。总体来说，阻塞性通气功能障碍就是由于气道的狭窄而导致的肺通气不良。\n" +
						"\n" +
						"一般来讲阻塞性通气功能障碍主要见于有慢性支气管炎、慢性阻塞性肺气肿或者肺心病的病人，长期吸烟、慢性咳嗽等导致的肺功能下降的病人。限制性通气功能障碍主要见于胸廓畸形、慢性心功能不全、肺水肿、肺间质病变等。混合性通气功能障碍是可能存在以上两种病理变化。";
			}
			if (lx_2<0.8) {
				lx = "限制型";
				jiedu = "限制性通气功能障碍是由于吸气时肺泡扩张不良而出现肺泡通气不足，导致了限制性通气功能障碍。限制性通气功能障碍可以由多种因素引起，因为在呼吸时，吸气是呼吸肌参与的主动的过程，在此过程中除了呼吸肌参与之外，胸廓肺脏都参与呼吸的过程，在上述过程中出现了疾病，出现限制性抗菌功能障碍，部分原因具体如下：\n" +
						"1、呼吸肌运动障碍：可以由中枢性疾病引起，也可以是外周性疾病引起，都引起了呼吸肌的运动不良，导致胸廓扩张受限，也导致了肺泡的充气不足，出现限制性通气功能障碍；\n" +
						"2、胸廓顺应性降低：也是引起限制性通气功能障碍的主要原因，胸廓的顺应性降低包括胸廓畸形、严重胸膜肥厚粘连，在呼吸运动时，胸廓的扩张受限，导致肺泡通气不足；\n" +
						"3、肺的顺应性降低：也可以导致限制性通气功能障碍因素，如肺间质纤维化，引起肺的弹性回缩率下降，导致限制性通气功能障碍；\n" +
						"4、胸腔积液和张力性气胸：由于压迫了肺脏，导致肺脏在吸气时扩张不良，也会出现限制性的通气功能障碍。";
			}
			if ((lx_1<0.92)&&(lx_2<0.8)) {
				lx = "混合型";
				jiedu = "混合性通气功能障碍即阻塞以及限制同时存在，混合性通气功能障碍主要是见于慢性阻塞性肺气肿、胸膜病变、胸廓畸形等引起，建议进一步检查胸片或胸部CT加以确诊。";
			}
			console.log();
			console.log(lx,'类型');
			console.log(jiedu,'解读');
			
			this.savedevices(res[13],res[14],res[15],res[16],res[17],res[18])
			this.setData({
				cd,
				lx,
				jiedu,
				PEFValue: Number(res[13]).toFixed(2),
				FEV1Value: Number(res[14]).toFixed(2),
				FVCValue: Number(res[15]).toFixed(2),
				MEF75Value: Number(res[16]).toFixed(2),
				MEF50Value: Number(res[17]).toFixed(2),
				MEF25Value: Number(res[18]).toFixed(2),
			})
    })
  },
	gethistrorylist() {
		api
			.post('/api/hxhealth/exams/records', {
				data: {
					everyday: true,
					itemcode: 'lk1681869139067',
					typecode: 'huxijia',
					everyday: true
				},
				head: {
					firstresult: 0,
					maxresults: 1000,
					bodytype: 'flat',
				}
			})
			.then((res) => {
				// console.log(res);
				console.log('----历史数据----', res);
				if (res.length > 0) {
					const jsonData = res;
					// 提取数据的数组
					const values = [];
					const times = [];

					// 遍历 body 数组
					jsonData.forEach((entry) => {
						// 遍历 devices 数组
						entry.devices.forEach((device) => {
							console.log(device);
							// 找到 code 为 "lk1681869139067" 的项
							const item = device.items.find((item) => item.code === 'lk1681869139067');

							// 如果找到了，将 value 和 time 添加到相应的数组中
							if (item) {
								console.log(item);
								values.push(Number(item.value)); // 将值转换为数字类型
								times.push(entry.time.slice(0, 10).replace(/-/g, '/'));
							}
						});
					});
					const linedata = {
						values,
						times
					};
          console.log(linedata);
          this.setData({
            linedata
          });
          // 模拟获取接口数据
    setTimeout(() => {
      this.getEchartData(linedata)
    }, 1000);
				}
			});
	},
	getloadlist() {
		// 整体列表查询
		api
			.post('/api/exams/lastvalues', {
				data: {
					devkind: 'huxijia',
					devmode: '',
					itemcode: '',
					typecode: '',
					unionuser: true
				}
			})
			.then((res) => {
				// console.log(res);
				console.log('----最新数据----', res);
				this.setData({
					newtime: res[0].examtime
				});
				const array = res;
				for (let y = 0; y < array.length; y++) {
					if (array[y].code == 'lk1681869139067') {
						this.setData({
							PEFValueLast: Number(array[y].value).toFixed(2)
						});
					}
					if (array[y].code == 'lk1681869139070') {
						this.setData({
							FEV1ValueLast: Number(array[y].value).toFixed(2)
						});
					}
					if (array[y].code == 'lk1681869139062') {
						this.setData({
							FVCValueLast: Number(array[y].value).toFixed(2)
						});
					}
					if (array[y].code == 'lk1681869139081') {
						this.setData({
							MEF75ValueLast: Number(array[y].value).toFixed(2)
						});
					}
					if (array[y].code == 'lk1681869139076') {
						this.setData({
							MEF50ValueLast: Number(array[y].value).toFixed(2)
						});
					}
					if (array[y].code == 'lk1681869139073') {
						this.setData({
							MEF25ValueLast: Number(array[y].value).toFixed(2)
						});
					}
				}
				console.log('----最新数据1----', this.data.PEFValueLast);
			});
	},
	savedevices(PEFValue,FEV1Value,FVCValue,MEF75Value,MEF50Value,MEF25Value) {
		console.log('2222');
		let data = {
			name: '运动监测',
			time: formatTime(),
			typecode: 'huxijia',
			typename: '运动监测',
			devices: [
				{
					name: '运动监测',
					kind: 'huxijia',
					items: [
						{
							code: 'lk1681869139067',
							checkDate: null,
							level: null,
							value: PEFValue?PEFValue:this.data.inputlist[0].value,
							deviceBrand: '',
							deviceNo: ''
						},
						{
							code: 'lk1681869139070',
							checkDate: null,
							level: null,
							value: FEV1Value?FEV1Value:this.data.inputlist[1].value,
							deviceBrand: '',
							deviceNo: ''
						},
						{
							code: 'lk1681869139062',
							checkDate: null,
							level: null,
							value: FVCValue?FVCValue:this.data.inputlist[2].value,
							deviceBrand: '',
							deviceNo: ''
						},
						{
							code: 'lk1681869139081',
							checkDate: null,
							level: null,
							value: MEF75Value?MEF75Value:this.data.inputlist[3].value,
							deviceBrand: '',
							deviceNo: ''
						},
						{
							code: 'lk1681869139076',
							checkDate: null,
							level: null,
							value: MEF50Value?MEF50Value:this.data.inputlist[4].value,
							deviceBrand: '',
							deviceNo: ''
						},
						{
							code: 'lk1681869139073',
							checkDate: null,
							level: null,
							value: MEF25Value?MEF25Value:this.data.inputlist[5].value,
							deviceBrand: '',
							deviceNo: ''
						}
					]
				}
			]
		};
		// 整体列表查询
		api
			.post('/api/hxhealth/exams/save', {
				data
			})
			.then((res) => {
				// console.log(res);
				console.log('----保存录入----', res);
				this.closesaveNickname();
				wx.showToast({
					icon: 'none',
					title: '保存成功'
				});
				this.getloadlist();
			})
			.catch((e) => {
				console.log(e);
				wx.showToast({
					icon: 'none',
					title: e.faultstring ? e.faultstring : '保存失败'
				});
			});
	},
	openNickname() {
		this.setData({
			inputshow: true
		});
	},
	closesaveNickname() {
		this.setData({
			inputshow: false
		});
	},
	userNameInput1(e) {
		console.log(e.detail.value);
		this.setData({
			'inputlist[0].value': e.detail.value
		});
	},
	userNameInput2(e) {
		console.log(e.detail.value);
		this.setData({
			'inputlist[1].value': e.detail.value
		});
	},
	userNameInput3(e) {
		console.log(e.detail.value);
		this.setData({
			'inputlist[2].value': e.detail.value
		});
	},
	userNameInput4(e) {
		console.log(e.detail.value);
		this.setData({
			'inputlist[3].value': e.detail.value
		});
	},
	userNameInput5(e) {
		console.log(e.detail.value);
		this.setData({
			'inputlist[4].value': e.detail.value
		});
	},
	userNameInput6(e) {
		console.log(e.detail.value);
		this.setData({
			'inputlist[5].value': e.detail.value
		});
	},
	saveNickname() {
		let cansave = true
		this.data.inputlist.forEach(item => {
			if(!item.value) {
				wx.showToast({
					title: '请输入数值',
					icon: 'none',
					duration: 2000
				})
				cansave = false
				return
			}
			if(!/^\d+(\.\d{1,2})?$/.test(Number(item.value))) {
				wx.showToast({
					title: '请输入两位小数之内的正整数',
					icon: 'none',
					duration: 2000
				})
				cansave = false
				return
			}
		})
		if(cansave) {
			this.savedevices();
		}
	},
	modal_click_Hidden() {
		this.setData({
			inputshow: false
		});
  },
    // 绘制图表
    runColumncCanva() {
      var option = {
        title: {
          // text: '次/分', 
          textStyle: {
              fontSize: 9,
              color: '#666666'
          }
      },
        color: ['#37A2DA'],
        legend: {
          data: ['近一年呼吸变化趋势'],
          icon: 'circle',
          left: 0,
          itemWidth: 9,
          // itemStyle: {
          //     color: '#5BBF70'
          // },
          // textStyle: {
          //     color: '#333333',
          //     fontSize: 13
          // }
      },
        grid: {
          left: '0%',
          right: '3%',
          bottom: 0,
          top: '15%',
          containLabel: true,
          show: true
      },
        
        tooltip: {
          show: true,
          trigger: 'axis'
        },
        xAxis: {
          type: 'category',
          boundaryGap: false,
          data: timeArr,
          axisLabel:{
            rotate:45,//倾斜度 -90 至 90 默认为0
          }
        },
        yAxis: {
          type: 'value',
          splitLine: {
            lineStyle: {
              type: 'dashed'
            }
          }
        },
        series: seriesDataArr
      };
      //这里一定要做个charts是否存在的判断，因为万一ec那里没有初始化，这里就会报错
      if (chart) {
        chart.setOption(option);
        this.setData({
          show: true
        });
      }
    },
    getEchartData (linedata) {
      seriesDataArr = [{
        name: '近一年呼吸变化趋势',
        type: 'line',
        stack: 'Total',
        smooth: true,
        data: linedata.values
      }]
        timeArr = linedata.times
        this.runColumncCanva()
    },
	// 链接设备
	goBindEq() {
		wx.navigateTo({
			url: '/breath/pages/measurement/index'
		});
	},
	toastclick(e) {
		console.log(e);
		let toastname = e.currentTarget.dataset.name
		if(toastname == 'PEF') {
			Toast('最大呼吸流量');
		}
		if(toastname == 'FEV1') {
			Toast('第一秒用力呼气流量');
		}
		if(toastname == 'FVC') {
			Toast('用力肺活量');
		}
		if(toastname == 'MEF75') {
			Toast('呼吸余量75%流速');
		}
		if(toastname == 'MEF50') {
			Toast('呼吸余量50%流速');
		}
		if(toastname == 'MEF25') {
			Toast('呼吸余量25%流速');
		}
	},

	/**
   * 生命周期函数--监听页面初次渲染完成
   */
	onReady: function() {
    
	},

	/**
   * 生命周期函数--监听页面显示
   */
	onShow() {},

	/**
   * 生命周期函数--监听页面隐藏
   */
	onHide() {},

	/**
   * 生命周期函数--监听页面卸载
   */
	onUnload() {
		bleUtils.closeBLE(this.data.bindDeviceId)
	},

	/**
   * 页面相关事件处理函数--监听用户下拉动作
   */
	onPullDownRefresh() {},

	/**
   * 页面上拉触底事件的处理函数
   */
	onReachBottom() {},

	/**
   * 用户点击右上角分享
   */
	onShareAppMessage() {}
});
